#pragma once
#include "xKernel/IxDescManager.h"

using namespace rapidxml;

[
    default(IxDescManager),
    threading(free),
    uuid("0B411F6C-E539-46bd-BC72-25888D0ED9D7"),
    coclass
]
class ATL_NO_VTABLE CxDescManager : public IxDescManager
{
public:
    CxDescManager();
    virtual ~CxDescManager();
    DECLARE_PROTECT_FINAL_CONSTRUCT()

public:
    // interface of IxDescManager
    HRESULT GetDescription(BSTR bsFile, IxPairVec** ppDesc);

protected:
    void    _parse(const xml_node<>* const node, IxPairVec* pVec);
    void    _parse_attribute(const xml_node<>* const node, IxPairVec* pVec);
    void    _parse_children(const xml_node<>* const node, IxPairVec* pVec);
};